package com.cskaoyan.javase.oop2._1extends._10final._1clazz;
/**
 * final修饰class表示最终的类,最后的类
 * 类正常情况下是可以被继承的,子类继承父类后可以修改和扩展父类
 * 最终的类是一个不能被继承的类
 * 语法:
 * 在定义class时:
 * [访问权限修饰符] final class 类名{
 *     // 类体
 * }
 * final修饰类后表示该类无法被继承,但其他任何操作都不受影响,比如创建对象,访问成员变量方法等.
 *
 * 思考:
 * 什么样的类需要设置为final修饰?
 *    当某一个类特别完善,功能特别强大时,不需要子类来扩展和修改它.
 *          这时为了保证绝对的安全性,就可以设置为final
 *          这种类在源代码中很多,比如:
 *          String,System
 * 正常情况下，我们很少会主动把一个类设置成final，因为没有太多的必要性。实际开发中，也要慎重将一个类设置final。
 * 常见的final修饰的类，都在JDK的源码当中。比如四类八种基本数据类型的包装类、Void、String、System、Scanner等等。
 * 
 * @since 17:28
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Father f = new Father();
        System.out.println(f.a);
        f.test();
    }
}
final class Father{
    int a = 10;
    public void test(){}
}
// Cannot inherit from final 'com.cskaoyan.javase.oop2._1extends._10final._1clazz.Father'
// class Son extends Father{}